package Question19_6; import CareerCupLibrary.AssortedMethods; public class Question { public static String numtostring(int num) { StringBuilder sb = new StringBuilder(); // Count number of digits in num. int len = 1; while (Math.pow((double)10, (double)len ) < num) { len++; } String[] wordarr1 = {"","One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ","Nine "}; String[] wordarr11 ={"", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen "}; String[] wordarr10 = {"","Ten ", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety "}; String[] wordarr100 = {"", "Hundred ", "Thousand "}; int tmp; if (num == 0) { sb.append("Zero"); } else { if (len > 3 && len % 2 == 0) { len++; } do { // Number greater than 999 if (len > 3) { tmp = (num / (int)Math.pow((double)10,(double)len-2)); // If tmp is 2 digit number and not a multiple of 10 if (tmp / 10 == 1 && tmp%10 != 0) { sb.append(wordarr11[tmp % 10]) ; } else { sb.append(wordarr10[tmp / 10]); sb.append(wordarr1[tmp % 10]); } if (tmp > 0) { sb.append(wordarr100[len / 2]); } num = num % (int)(Math.pow((double)10,(double)len-2)); len = len-2; } else { // Number is less than 1000 tmp = num / 100; if (tmp != 0) { sb.append(wordarr1[tmp]); sb.append(wordarr100[len / 2]); } tmp = num % 100 ; if(tmp / 10 == 1 && tmp % 10 != 0) { sb.append(wordarr11[tmp % 10]) ; } else { sb.append(wordarr10[tmp / 10]); sb.append(wordarr1[tmp % 10]); } len = 0; } } while(len > 0); } return sb.toString(); } public static void main(String[] args) { for (int i = 0; i < 10; i++) { int value = AssortedMethods.randomIntInRange(0, 10000); String s = numtostring(value); System.out.println(value + ": " + s); } } }